package us.mooresr.geartrack.client.gin;

import com.google.gwt.inject.client.GinModules;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import us.mooresr.geartrack.client.gin.ClientModule;
import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.event.shared.EventBus;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.google.inject.Provider;
import com.google.gwt.inject.client.AsyncProvider;

import us.mooresr.geartrack.client.core.presenter.BorrowPresenter;
import us.mooresr.geartrack.client.core.presenter.MainPresenter;
import us.mooresr.geartrack.client.core.presenter.ItemPresenter;
import us.mooresr.geartrack.client.core.presenter.ReturnItemPresenter;
import us.mooresr.geartrack.client.core.presenter.PeoplePresenter;
import us.mooresr.geartrack.client.core.presenter.LocationPresenter;
import us.mooresr.geartrack.client.core.presenter.ItemTypePresenter;

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();

	PlaceManager getPlaceManager();

	Provider<MainPresenter> getMainPresenter();

	Provider<BorrowPresenter> getBorrowPresenter();

	Provider<ItemPresenter> getObjectPresenter();

	AsyncProvider<ReturnItemPresenter> getReturnObjectPresenter();

	AsyncProvider<PeoplePresenter> getPeoplePresenter();

	AsyncProvider<LocationPresenter> getLocationPresenter();

	AsyncProvider<ItemTypePresenter> getItemTypePresenter();
}
